package modelo.geometria.tests;

import modelo.geometria.Vector;
import modelo.geometria.NuevoRectangulo;

import org.junit.Test;
import org.junit.Assert;


public class TestsGeometria {
	
	@Test
	public void pruebaRectanguloSolapa() {
		Vector posicion1 = new Vector(10,10);
		Vector posicion2 = new Vector(0,0);
		
		NuevoRectangulo rectangulo1 = new NuevoRectangulo(posicion1,10,10);
		NuevoRectangulo rectangulo2 = new NuevoRectangulo(posicion2,10,10);
		
		Assert.assertTrue("No se solapan los rectangulos.",rectangulo1.solapa(rectangulo2));
		
		
	}

	@Test
	public void pruebaRectanguloSolapaContenido() {
		Vector posicion1 = new Vector(0,0);
		Vector posicion2 = new Vector(0,0);
		
		NuevoRectangulo rectangulo1 = new NuevoRectangulo(posicion1,100,100,4);
		NuevoRectangulo rectangulo2 = new NuevoRectangulo(posicion2,10,10);
		
		Assert.assertTrue("No se solapan los rectangulos.",rectangulo1.solapa(rectangulo2));
		
		
	}
	
	@Test
	public void pruebaRectanguloNoSolapa() {
		Vector posicion1 = new Vector(10,10);
		Vector posicion2 = new Vector(0,0);
		
		NuevoRectangulo rectangulo1 = new NuevoRectangulo(posicion1,1,1);
		NuevoRectangulo rectangulo2 = new NuevoRectangulo(posicion2,8,8);
		
		Assert.assertTrue("No se solapan los rectangulos.",!rectangulo1.solapa(rectangulo2));
		
	}

	@Test
	public void testVertices() {
		Vector posicion = new Vector(0,0);
		NuevoRectangulo rectangulo = new NuevoRectangulo(posicion,1,1,Math.PI/4);
		double raizDeDos = Math.sqrt(2);
		Vector esperado = new Vector(0,raizDeDos/2);
		Vector existente = rectangulo.getPunto(Math.PI/4);
		
		Assert.assertEquals("No son iguales en x.", esperado.getX(), existente.getX(),0.01);
		Assert.assertEquals("No son iguales en y.", esperado.getY(), existente.getY(),0.01);
	}
	
}
